import java.util.LinkedList;

public class homework03 {
    /**
     * 有80个小朋友手拉手围成一圈，由第一个小朋友开始从1开始数，数到3的小朋友退出，再从后面的、
     *      *  小朋友从1数起，数到3的再退出，以此游戏下去，问最后剩下哪个小朋友？(使用集合实现)
     * @param child 小朋友的数量
     * @param num 数到3的小朋友退出游戏
     * @return
     */
    public static int joseph(int child, int num) {
        LinkedList<Integer> children = new LinkedList<>();
        for (int i = 1; i <= child; i++) {
            children.add(i);  // 初始化小朋友列表
        }

        int index = 0;
        while (children.size() > 1) {
            index = (index + num - 1) % children.size();  // 计算要退出的小朋友的索引
            System.out.println("小朋友 " + children.get(index) + " 退出了游戏");
            children.remove(index);  // 移出圈子
        }

        return children.get(0);  // 返回最后剩下的小朋友的编号
    }
    public static void main(String[] args) {
            int child = 80;
            int num = 3;
        int joseph = joseph(child, num);
        System.out.println("经过游戏后，最后剩下的小朋友编号是：" + joseph);
    }
}
